package busquedasciegas.anchura;

// Primer cambio para probar SVN 

import java.util.*;

public class Aleatorio {
	
	Random r;
	
	public Aleatorio()
	{
		r = new Random();
	}
	
	/**
	 * 
	 * @return Un entero aleatorio entre 0 y numMaximo.
	 */
	public int entero(int numMaximo){
		//r.setSeed(new Date().getTime());
		return r.nextInt(numMaximo);
	}
	
	/**
	 * Dada una lista este método retorna dicha lista en un orden
	 * distinto, determinado aleatoriamente.
	 * @param lista Una lista de números enteros.
	 * @return La lista de enteros entregada en un orden distinto
	 * (aleatorio).
	 */
	public LinkedList<Integer> aleatoria(LinkedList<Integer> lista){
		LinkedList<Integer> viejaLista = lista;
		LinkedList<Integer> nuevaLista = new LinkedList<Integer>();
		int numMax = lista.size();
		int num = entero(numMax);
		while (viejaLista.size() != 0){
			//System.out.println(num);
			if (!nuevaLista.contains(num)){
				nuevaLista.add(num);
				viejaLista.removeFirstOccurrence(num);
//				System.out.println("--- Vieja Lista ---");
//				for (Integer i : viejaLista) {
//					System.out.println(i);
//				}
//				System.out.println("---Nueva Lista---");
//				for (Integer i : nuevaLista) {
//					System.out.println(i);
//				}
			}
			num = entero(numMax);
		}
		return nuevaLista;	
		
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Aleatorio aleatorio = new Aleatorio();
//		LinkedList<Integer> lista = new LinkedList<Integer>();
//		lista.add(1);
//		lista.add(2);
//		lista.add(3);
//		lista.add(4);
//		lista.add(5);
//		lista.add(6);
//		lista.add(7);
//		lista.add(8);
//		LinkedList<Integer> nuevaLista = a.aleatoria(lista);
//		for (Integer i : nuevaLista) {
//			System.out.println(i);
//		}
		int[][] a = new int[][]{{0,1,2,3},{0,1,2,3},{3,2,1,0},{3,2,1,0}};
		int[][] b = new int[][]{{0,1,2,3},{0,1,2,3},{3,2,1,0},{3,2,0,0}};
		System.out.println(aleatorio.iguales(a,b));
	}
	
	private boolean iguales(int[][] a, int[][] b)
	{
		for (int i = 0; i < a.length; i++){
			for (int j = 0; j < a[0].length; j++){
				if (a[i][j] != b[i][j]){
					return false;
				}
			}
		}
		return true;
	}
}
